A requirement of any robust computing environment is to be able to recover from errors, such as device hardware errors (e.g., mechanical or electrical errors) or recording media errors. In order to recover from some device or media errors, it is necessary to restart a process, either from the beginning or from some other point within the process.
To facilitate recovery of a process, especially a long running process, intermediate results of the process are taken at particular intervals. This is referred to as checkpointing the process. Checkpointing enables the process to be restarted from the last checkpoint, rather than from the beginning of the process.
When a process is restarted, it is restored to the state it was in when the checkpoint was taken. Thus, any and all changes subsequent to the last checkpoint are undone. This includes any changes that have been made to the environment variables associated with the process. Once the process is restored to its former state, it continues to execute from that point.
Based on the foregoing, a need exists for a restore capability that does not require that all information be restored to the point at which the checkpoint was taken. That is, a need exists for a capability that allows selected information to remain unrestored. A need exists for a capability that enables selected information to be adjusted as part of the restoration, such that the selected information reflects the current operating environment rather than the operating environment at the time the checkpoint was taken.